// The CLASS THE ALL GAMEOBJECTS DERIVE FROM

#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H

#include <string>
#include "Vec3.h"
#include "Matrix4x4.h"

class GameObject
{
public:
	GameObject();
	virtual ~GameObject();
	void SetID();
	void SetID(unsigned int id);

	virtual const char* GetTypeName() const = 0;

	unsigned int GetID() const;

	virtual bool Load() {return true;}
	virtual void Update();
	virtual void Draw();

	const Vec3& GetPos() const;
	const Vec3& GetVel() const;
	const Vec3& GetAcc() const;   	
	void SetPos (const Vec3& newPos);
	void SetVel (const Vec3& newVel);
	void SetAcc (const Vec3& newAcc);

	const Matrix4x4& GetTranslationM() const;

	bool IsActive() {return m_Active;}

protected:

	unsigned int m_ID;
	Vec3 m_Pos;
	Vec3 m_Vel;
	Vec3 m_Acc;

	Matrix4x4 m_TranslationM;

	bool m_Active;

};

#endif